﻿
var storeNovedad = Ext.create('Ext.data.Store', {
    storeId: 'storeNovedad',
    autoLoad: false,
    model: 'Model.Novedad',
    pageSize: -1
});

function ComprobarNovedades() {
    storeNovedad.load({
        callback: function (rcd, opr, success) {
            if (success && rcd.length > 0) {
                Ext.each(rcd, function (itm) {
                    if (!Ext.getCmp('novedad' + itm.get('id_novedad'))) {
                        Ext.getCmp('pnlBandeja').add(new Ext.panel.Panel({
                            id: 'novedad' + itm.get('id_novedad'),
                            idNovedad: itm.get('id_novedad'),
                            closable: true,
                            autoHeight: true,
                            title: Ext.Date.format(itm.get('fecha_hora'), 'd/m/Y H:m'),
                            listeners: {
                                close: function (pnl) {
                                    storeNovedad.getById(pnl.idNovedad).set('informada', true);
                                    storeNovedad.sync();
                                }
                            },
                            items: [{
                                xtype: 'label',
                                text: itm.get('descripcion'),
                                record: itm,
                                listeners: {
                                    afterrender: function (lbl) {
                                        lbl.getEl().on('click', function () {
                                            if (!Ext.isEmpty(lbl.record.data.id_articulo)) {
                                                mostrarArticulo(lbl.record.data.id_articulo);
                                                return;
                                            }
                                            if (!Ext.isEmpty(lbl.record.data.id_pedido)) {
                                                mostrarPedido(lbl.record.data.id_pedido);
                                                return;
                                            }
                                        });
                                    }
                                }
                            }]
                        }));
                    }
                });
            }
        }
    });
    Ext.defer(ComprobarNovedades, 15000);
}

function mostrarArticulo(idArticulo) {
    var me = this;
    Ext.ModelManager.getModel('Model.ListadosArticulos').load(
        Ext.JSON.encode([{ field: 'id_articulo', value: idArticulo, comparison: 'eq' }]),
    {
        success: function (rcdLoaded) {
            showWinArticulo().show();

            Ext.getCmp('formArticulo').loadRecord(rcdLoaded);
            Ext.defer(function () {
                Ext.StoreMgr.get('lstArticuloClasificacion').load({
                    params: { filter: '[{ "type": "numeric", "comparison": "eq", "value": ' + rcdLoaded.get('id_articulo') + ', "field": "id_articulo"}]' }
                });
            }, 500);
        }
    });
}

function mostrarPrecio(idArticulo) {
    var me = this;
    Ext.ModelManager.getModel('Model.ListadosPrecios').load(
        Ext.JSON.encode([{ field: 'id_articulo', value: idArticulo, comparison: 'eq' }]),
    {
        success: function (rcdLoaded) {
            showWinArticulo().show();
            rcdLoaded.set('entidadProveedor', rcdLoaded.data.nm_proveedor);

            Ext.getCmp('formArticulo').loadRecord(rcdLoaded);
            Ext.defer(function () {
                Ext.StoreMgr.get('lstArticuloClasificacion').load({
                    params: { filter: '[{ "type": "numeric", "comparison": "eq", "value": ' + rcdLoaded.get('id_articulo') + ', "field": "id_articulo"}]' }
                });
            }, 500);
        }
    });
}

function mostrarHistorico(idArticulo) {
    var me = this;
    Ext.ModelManager.getModel('Model.EvolucionPrecio').load(
        Ext.JSON.encode([{ field: 'id_historial', value: idArticulo, comparison: 'eq' }]),
    {
        success: function (rcdLoaded) {
            showWinArticulo().show();

            Ext.getCmp('formArticulo').loadRecord(rcdLoaded);
            Ext.defer(function () {
                Ext.StoreMgr.get('lstArticuloClasificacion').load({
                    params: { filter: '[{ "type": "numeric", "comparison": "eq", "value": ' + rcdLoaded.get('id_articulo') + ', "field": "id_articulo"}]' }
                });
            }, 500);
        }
    });
}

function showWinArticulo() {
    CreateForeignStore('storeClasificacion', 'Model.ClasifArticulos');
    Ext.create('Ext.data.Store', {
        storeId: 'lstArticuloClasificacion',
        autoLoad: false,
        model: 'Model.ArticuloClasificacion',
        remoteSort: true
    });

    return Ext.create('Ext.window.Window', {
        id: 'winArticulo',
        autoHeight: true,
        maxHeight: Ext.getBody().getHeight() - 100,
        width: 600,
        layout: 'fit',
        autoDestroy: true,
        modal: true,
        closable: false,
        closeAction: 'destroy',
        resizable: false,
        items: [{
            xtype: 'form',
            layout: 'form',
            frame: true,
            id: 'formArticulo',
            autoDestroy: true,
            bodyStyle: {
                "padding-right": '20px'
            },
            buttons: [{
                text: 'Aceptar',
                iconCls: 'boton-Aceptar',
                handler: function () {
                    Ext.getCmp('winArticulo').close();
                }
            }],
            items: [{
                xtype: 'fieldset',
                title: 'General',
                collapsible: true,
                items: [{
                    xtype: 'textfield',
                    fieldLabel: 'Identificador',
                    name: 'id_articulo',
                    readOnly: true
                }, {
                    xtype: 'textfield',
                    fieldLabel: 'Código',
                    name: 'codigo',
                    readOnly: true
                }, {
                    xtype: 'textfield',
                    fieldLabel: 'Descripción',
                    name: 'descripcion',
                    readOnly: true
                }, {
                    xtype: 'textfield',
                    fieldLabel: 'Entidad Proveedor',
                    name: 'entidadProveedor',
                    readOnly: true
                }]
            }, {
                xtype: 'fieldset',
                title: 'Detalle',
                collapsible: true,
                items: [{
                    xtype: 'container',
                    frame: true,
                    layout: 'column',
                    items: [{
                        xtype: 'fieldset',
                        columnWidth: 0.5,
                        border: false,
                        items: [{
                            xtype: 'textfield',
                            fieldLabel: 'Marca',
                            name: 'marca',
                            readOnly: true
                        }, {
                            xtype: 'textfield',
                            fieldLabel: 'Rubro',
                            name: 'rubro',
                            readOnly: true
                        }, {
                            xtype: 'textfield',
                            fieldLabel: 'Categoría de Artículo',
                            name: 'categoriaArticulo',
                            readOnly: true
                        }, {
                            xtype: 'grid',
                            title: 'Clasificación de Artículo',
                            height: 150,
                            store: Ext.StoreMgr.get('lstArticuloClasificacion'),
                            columns: [
                            { header: 'Clasificación', dataIndex: 'name', menuDisabled: true, sortable: false },
                            { header: 'Valor', dataIndex: 'valor', flex: 1, menuDisabled: true, sortable: false }
                            ]
                        }]
                    }, {
                        xtype: 'fieldset',
                        columnWidth: 0.5,
                        frame: true,
                        border: false,
                        items: [{
                            xtype: 'textfield',
                            fieldLabel: 'Unidad de Venta',
                            name: 'unid_venta',
                            readOnly: true
                        }, {
                            xtype: 'textfield',
                            fieldLabel: 'Unidad de Empaque',
                            name: 'unid_empaque',
                            readOnly: true
                        }, {
                            xtype: 'textfield',
                            fieldLabel: 'Medida de Empaque',
                            name: 'medida_empaque',
                            readOnly: true
                        }, {
                            xtype: 'numberfield',
                            fieldLabel: 'Precio',
                            name: 'precio_bruto',
                            readOnly: true
                        }, {
                            xtype: 'numberfield',
                            fieldLabel: 'Porcentaje IVA',
                            name: 'iva1',
                            readOnly: true
                        }, {
                            xtype: 'numberfield',
                            fieldLabel: 'Porcentaje IVA adicional',
                            name: 'iva2',
                            maxLength: 10,
                            enforceMaxLength: true,
                            readOnly: true
                        }]
                    }]
                }]
            }, {
                xtype: 'fieldset',
                title: 'Observaciones',
                collapsible: true,
                layout: 'fit',
                items: [{
                    xtype: 'textarea',
                    readOnly: true,
                    hideLabel: true,
                    name: 'observaciones'
                }]
            }]
        }]
    });
}

function mostrarPedido(idPedido) {
    var sPedidoDetalle = CreateForeignStore(Ext.id(), 'Model.PedidoDetalle', false);
    var sArticulos = CreateForeignStore(Ext.id(), 'Model.Articulos');
    var sEntidad = CreateForeignStore(Ext.id(), 'Model.Comercios');
    var sProveedores = CreateForeignStore(Ext.id(), 'Model.Proveedores');

    Ext.ModelManager.getModel('Model.Pedido').load(
        Ext.JSON.encode([{ field: 'id_pedido', value: idPedido, comparison: 'eq' }]),
    {
        success: function (rcdLoaded) {
            winPedido.show();
            Ext.getCmp('formmpPedido').loadRecord(rcdLoaded);
            sPedidoDetalle.load({
                params: { filter: '[{ "type": "numeric", "comparison": "eq", "value": ' + rcdLoaded.get('id_pedido') + ', "field": "id_pedido"}]' }
            });
        }
    });

    var winPedido = Ext.create('Ext.window.Window', {
        id: 'winmpPedido',
        autoHeight: true,
        maxHeight: Ext.getBody().getHeight() - 100,
        minHeight: 400,
        width: 600,
        layout: 'fit',
        autoDestroy: true,
        modal: true,
        closable: false,
        closeAction: 'destroy',
        resizable: true,
        items: [{
            xtype: 'form',
            layout: 'form',
            frame: true,
            id: 'formmpPedido',
            autoDestroy: true,
            bodyStyle: {
                "padding-right": '20px'
            },
            buttons: [{
                text: 'Aceptar',
                iconCls: 'boton-Aceptar',
                handler: function () {
                    Ext.getCmp('winmpPedido').close();
                    sPedidoDetalle.destroyStore();
                    sArticulos.destroyStore();
                    sEntidad.destroyStore();
                    sProveedores.destroyStore();
                }
            }],
            items: [{
                xtype: 'fieldset',
                title: 'Cabecera',
                collapsible: true,
                items: [{
                    xtype: 'container',
                    frame: true,
                    layout: 'column',
                    items: [{
                        xtype: 'fieldset',
                        columnWidth: 0.5,
                        border: false,
                        items: [{
                            xtype: 'textfield',
                            fieldLabel: 'Identificador',
                            name: 'id_pedido',
                            maxLength: 10,
                            enforceMaxLength: true,
                            readOnly: true
                        }, {
                            xtype: 'datefield',
                            fieldLabel: 'Fecha de Alta',
                            name: 'fecha',
                            readOnly: true
                        }, {
                            xtype: 'combobox',
                            fieldLabel: 'Entidad Proveedor',
                            queryMode: 'local',
                            displayField: 'nombre',
                            valueField: 'id_entidad',
                            store: sProveedores,
                            name: 'id_entidad_pro',
                            readOnly: true
                        }, {
                            xtype: 'combobox',
                            fieldLabel: 'Comercio',
                            queryMode: 'local',
                            displayField: 'nombre',
                            valueField: 'id_entidad',
                            store: sEntidad,
                            readOnly: true,
                            name: 'id_entidad_com'
                        }]
                    }, {
                        xtype: 'fieldset',
                        columnWidth: 0.5,
                        border: false,
                        items: [{
                            xtype: 'datefield',
                            fieldLabel: 'Fecha de Entrega',
                            name: 'fecha_entrega',
                            readOnly: true
                        }, {
                            xtype: 'datefield',
                            fieldLabel: 'Fecha de Pago',
                            name: 'fecha_pago',
                            readOnly: true
                        }, {
                            xtype: 'textfield',
                            id: 'tfTotal',
                            fieldLabel: 'Total',
                            name: 'total',
                            readOnly: true
                        }]
                    }]
                }]
            }, {
                xtype: 'fieldset',
                title: 'Detalle',
                collapsible: true,
                items: [{
                    xtype: 'grid',
                    height: 200,
                    store: sPedidoDetalle,
                    columns: [
                { header: 'Item', dataIndex: 'item' },
                { header: 'Descripcion', dataIndex: 'descripcion', flex: 1 },
                { header: 'Precio', dataIndex: 'precio', xtype: 'numbercolumn', format: '0.00' }
                    ]
                }]
            }, {
                xtype: 'fieldset',
                title: 'Observaciones',
                collapsible: true,
                layout: 'fit',
                items: [{
                    xtype: 'textarea',
                    hideLabel: true,
                    name: 'observaciones',
                    readOnly: true
                }]
            }]
        }]
    });
}

function AntesLogueo() {
    var url = 'Handlers/LimpiarVariables.ashx';
    var response = Ext.Ajax.request({
        async: false,
        url: url
    });
}

function DescargarExcel(handlerUrl, fileName) {
    try {
        var body = Ext.getBody();
        var frame = body.createChild({
            tag: 'iframe',
            cls: 'x-hidden',
            name: 'iframe'
        });

        var form = body.createChild({
            tag: 'form',
            cls: 'x-hidden',
            method: 'post',
            action: handlerUrl + "?action=ExportaraPDF",
            target: 'iframe',
            enctype: 'application/x-www-form-urlencoded',
            encoding: 'application/x-www-form-urlencoded'
        });

        var hiddenItem1 = document.createElement('input');
        Ext.fly(hiddenItem1).set({
            type: 'hidden',
            value: fileName,
            name: 'fileName'
        });
        form.appendChild(hiddenItem1);
        form.dom.submit();
    } catch (e) {

    }

}